package tech.aistar.mapper;

import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import tech.aistar.pojo.User;

import java.util.List;

/**
 * 本类用来演示:
 *
 * @author: success
 * @date: 2021/5/31 11:13 上午
 */
public interface UserMapper extends BaseMapper<User> {

    //自定义sql - mybatis原生的方式
    @Select("select * from user")
    List<User> findAll();

    //自定义sql - mybatis-plus方式
    @Select("select * from user ${ew.customSqlSegment}")
    List<User> findAllWhere(@Param(Constants.WRAPPER)Wrapper<User> wrapper);

    /**
     *在实际开发中，可能遇到**多表联查**的场景，此时`BaseMapper`中提供的单表分页查询的方法无法满足需求，
     * 需要**自定义SQL**，示例如下（使用单表查询的SQL进行演示，实际进行多表联查时，
     * 修改SQL语句即可）
     *
     * 这里采用纯注解方式。当然，若SQL比较复杂，建议还是采用XML的方式
     * @param page
     * @param wrapper
     * @return
     */
    @Select("select * from user ${ew.customSqlSegment}")
    Page<User> selectUserPage(Page<User> page,@Param(Constants.WRAPPER)Wrapper<User> wrapper);
}
